home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / programming / other / cyberxxxsrc / cyberqt / txt / cyberqtopts.mod < prev    next >
Text File  |  1999-02-08  |  9KB  |  288 lines

  1. MODULE  CyberQTOpts;
  2.  
  3. (* $IFNOT DEBUG *)
  4.   (* $StackChk- $OvflChk- $RangeChk- $CaseChk- $ReturnChk- $NilChk- $TypeChk- $OddChk- $ClearVars- *)
  5. (* $END *)
  6.  
  7. (* /// ------------------------------- "IMPORT" -------------------------------- *)
  8. IMPORT  b:=BestModeID,
  9.         d:=Dos,
  10.         e:=Exec,
  11.         g:=CyberQTGlobals,
  12.         ics:=IconSupport,
  13.         ol:=OberonLib,
  14.         wb:=Workbench,
  15.         y:=SYSTEM;
  16. (* \\\ ------------------------------------------------------------------------- *)
  17.  
  18. (* /// --------------------------------- "VAR" --------------------------------- *)
  19. VAR     rda: d.RDArgsPtr;
  20.         out: d.FileHandlePtr;
  21.         oldOut: d.FileHandlePtr;
  22.  
  23.         pubScreen * : e.STRING;
  24.         askScrMode - : BOOLEAN;
  25.         screenModeID - : LONGINT;
  26.         force24 - : BOOLEAN;
  27.         grayScale - : BOOLEAN;
  28.         aga - : BOOLEAN;
  29.         ham8 - : BOOLEAN;
  30.         dither - : BOOLEAN;
  31.         cmap - : e.STRING;
  32.         bufferSize - : LONGINT;
  33.         startDelay - : LONGINT;
  34.         doLoop - : BOOLEAN;
  35.         maxFPS - : BOOLEAN;
  36.         noSound - : BOOLEAN;
  37.         noVideo - : BOOLEAN;
  38.         doSkip - : BOOLEAN;
  39.         audioPreload - : BOOLEAN;
  40.         magnify - : LONGINT;
  41.         doStats - : BOOLEAN;
  42.         quiet - : BOOLEAN;
  43. (* /// "$IF RUNDEBUG" *)
  44.         debug - : BOOLEAN;
  45. (* \\\ $END *)
  46. (* \\\ ------------------------------------------------------------------------- *)
  47.  
  48. (* /// -------------------------------- "CONST" -------------------------------- *)
  49. CONST   defBufferSize=64;
  50.         defStartDelay=2;
  51.         defPubScreen="";
  52.         defMagnify=1;
  53.         defScrModeID="0x00000000";
  54. (* \\\ ------------------------------------------------------------------------- *)
  55.  
  56. (* /// ---------------------- "PROCEDURE CheckOptions()" ----------------------- *)
  57. PROCEDURE CheckOptions();
  58. BEGIN
  59.   IF startDelay>10 THEN startDelay:=10; END;
  60.   IF startDelay<0 THEN startDelay:=defStartDelay; END;
  61.   IF bufferSize>4096 THEN bufferSize:=4096; END;
  62.   IF bufferSize<=0 THEN bufferSize:=defBufferSize; END;
  63.   bufferSize:=bufferSize*1024;
  64.   IF magnify<-4 THEN magnify:=-4; END;
  65.   IF (magnify=-1) OR (magnify=0) OR (magnify=1) THEN magnify:=defMagnify; END;
  66.   IF magnify>4 THEN magnify:=4; END;
  67.   IF ~aga THEN aga:=g.agaOnly; END;
  68.   IF ham8 THEN
  69.     IF ~g.cgfxOnly THEN
  70.       aga:=TRUE;
  71.     ELSE
  72.       d.PrintF("You have no AGA chipset. The HAM8 option only works with AGA!\n");
  73.       ham8:=FALSE;
  74.     END;
  75.   END;
  76.   IF dither THEN aga:=TRUE; END;
  77.   IF (pubScreen#"") & g.agaOnly THEN
  78.     d.PrintF("You have no CyberGraphX installed. The PUBSCREEN option only works with CyberGraphX!\n");
  79.     pubScreen:="";
  80.   END;
  81.   IF (pubScreen#"") & aga THEN aga:=FALSE; END;
  82.   IF (pubScreen#"") & ham8 THEN
  83.     d.PrintF("You must specify only one option of HAM8 and PUBSCREEN. HAM8 display switched off!\n");
  84.     ham8:=FALSE;
  85.   END;
  86.   IF grayScale & ham8 THEN
  87.     d.PrintF("You must specify only one option of HAM8 and GRAY. Grayscale display switched off!\n");
  88.     grayScale:=FALSE;
  89.   END;
  90.   IF grayScale & dither THEN
  91.     d.PrintF("You must specify only one option of DITHER and GRAY. Grayscale display switched off!\n");
  92.     grayScale:=FALSE;
  93.   END;
  94.   IF ham8 & dither THEN
  95.     d.PrintF("You must specify only one option of HAM8 and DITHER. HAM8 display switched off!\n");
  96.     grayScale:=FALSE;
  97.   END;
  98.   IF noVideo & noSound THEN
  99.     d.PrintF("You must not specify both options NOVIDEO and NOSOUND. Video playback switched on!\n");
  100.     noVideo:=FALSE;
  101.   END;
  102.   IF noVideo & doStats THEN doStats:=FALSE; END;
  103. (* /// "$IF RUNDEBUG" *)
  104.   IF debug THEN quiet:=FALSE; END;
  105. (* \\\ $END *)
  106. END CheckOptions;
  107. (* \\\ ------------------------------------------------------------------------- *)
  108.  
  109. (* /// --------------------- "PROCEDURE GetArgValueInt()" ---------------------- *)
  110. PROCEDURE GetArgValueInt(arg: d.ArgLong;
  111.                          def: LONGINT): LONGINT;
  112. BEGIN
  113.   IF arg#NIL THEN
  114.     RETURN arg[0]
  115.   ELSE
  116.     RETURN def;
  117.   END;
  118. END GetArgValueInt;
  119. (* \\\ ------------------------------------------------------------------------- *)
  120.  
  121. (* /// --------------------- "PROCEDURE GetArgValueStr()" ---------------------- *)
  122. PROCEDURE GetArgValueStr(arg: d.ArgString;
  123.                          def: e.STRING): e.STRING; (* $CopyArrays-*)
  124.  
  125. VAR     dummy: e.STRING;
  126.  
  127. BEGIN
  128.   IF arg#NIL THEN
  129.     COPY(arg^,dummy);
  130.     RETURN dummy;
  131.   ELSE
  132.     RETURN def;
  133.   END;
  134. END GetArgValueStr;
  135. (* \\\ ------------------------------------------------------------------------- *)
  136.  
  137. (* /// ---------------------- "PROCEDURE GetShellOpts()" ----------------------- *)
  138. PROCEDURE GetShellOpts * (template: ARRAY OF CHAR): d.ArgStringArray;
  139.  
  140. VAR     args: UNTRACED POINTER TO STRUCT(dummy: d.ArgsStruct)
  141.             files: d.ArgStringArray;
  142.             pubScreen: d.ArgString;
  143.             scrModeReq: d.ArgBool;
  144.             scrModeID: d.ArgString;
  145.             force24: d.ArgBool;
  146.             grayScale: d.ArgBool;
  147.             aga: d.ArgBool;
  148.             ham8: d.ArgBool;
  149.             dither: d.ArgBool;
  150.             cmap: d.ArgString;
  151.             bufferSize: d.ArgLong;
  152.             startDelay: d.ArgLong;
  153.             loop: d.ArgBool;
  154.             maxFPS: d.ArgBool;
  155.             noSound: d.ArgBool;
  156.             noVideo: d.ArgBool;
  157.             skip: d.ArgBool;
  158.             audioPreload: d.ArgBool;
  159.             magnify: d.ArgLong;
  160.             stats: d.ArgBool;
  161.             quiet: d.ArgBool;
  162. (* /// "$IF RUNDEBUG" *)
  163.             debug: d.ArgBool;
  164. (* \\\ $END *)
  165.         END;
  166.         scrID: e.STRING;
  167.  
  168. BEGIN
  169.   NEW(args);
  170.   rda:=d.ReadArgs(template,args^,NIL);
  171.   IF rda#NIL THEN
  172.     startDelay:=GetArgValueInt(args.startDelay,defStartDelay);
  173.     bufferSize:=GetArgValueInt(args.bufferSize,defBufferSize);
  174.     pubScreen:=GetArgValueStr(args.pubScreen,defPubScreen);
  175.     noVideo:=(args.noVideo=e.LTRUE);
  176.     noSound:=(args.noSound=e.LTRUE);
  177.     doLoop:=(args.loop=e.LTRUE);
  178.     askScrMode:=(args.scrModeReq=e.LTRUE);
  179.     scrID:=GetArgValueStr(args.scrModeID,defScrModeID);
  180.     aga:=(args.aga=e.LTRUE);
  181.     ham8:=(args.ham8=e.LTRUE);
  182.     dither:=(args.dither=e.LTRUE);
  183.     cmap:=GetArgValueStr(args.cmap,"");
  184.     grayScale:=(args.grayScale=e.LTRUE);
  185.     force24:=(args.force24=e.LTRUE);
  186.     maxFPS:=(args.maxFPS=e.LTRUE);
  187.     doSkip:=(args.skip=e.LTRUE);
  188.     audioPreload:=(args.audioPreload=e.LTRUE);
  189.     magnify:=GetArgValueInt(args.magnify,defMagnify);
  190.     doStats:=(args.stats=e.LTRUE);
  191.     quiet:=(args.quiet=e.LTRUE);
  192. (* /// "$IF RUNDEBUG" *)
  193.     debug:=(args.debug=e.LTRUE);
  194. (* \\\ $END *)
  195.     CheckOptions();
  196.     screenModeID:=b.CalcModeID(scrID);
  197.     RETURN args.files;
  198.   ELSE
  199.     y.SETREG(0,d.PrintFault(d.IoErr(),NIL));
  200.     RETURN NIL;
  201.   END;
  202. END GetShellOpts;
  203. (* \\\ ------------------------------------------------------------------------- *)
  204.  
  205. (* /// ----------------------- "PROCEDURE GetIconOpts()" ----------------------- *)
  206. PROCEDURE GetIconOpts * (icon: wb.DiskObjectPtr);
  207.  
  208. VAR     scrID: e.STRING;
  209.  
  210. BEGIN
  211.   bufferSize:=ics.GetTTValueInt(icon,"BUFFERSIZE",defBufferSize);
  212.   startDelay:=ics.GetTTValueInt(icon,"DELAY",defStartDelay);
  213.   force24:=ics.LookupToolType(icon,"FORCE24");
  214.   grayScale:=ics.LookupToolType(icon,"GRAY") OR ics.LookupToolType(icon,"GREY");
  215.   aga:=ics.LookupToolType(icon,"AGA");
  216.   ham8:=ics.LookupToolType(icon,"HAM8");
  217.   dither:=ics.LookupToolType(icon,"DITHER");
  218.   cmap:=ics.GetTTValueStr(icon,"CMAP","");
  219.   doLoop:=ics.LookupToolType(icon,"LOOP");
  220.   maxFPS:=ics.LookupToolType(icon,"MAXFPS");
  221.   noSound:=ics.LookupToolType(icon,"NOSOUND");
  222.   noVideo:=ics.LookupToolType(icon,"NOVIDEO");
  223.   pubScreen:=ics.GetTTValueStr(icon,"PUBSCREEN",defPubScreen);
  224.   quiet:=ics.LookupToolType(icon,"QUIET");
  225.   askScrMode:=ics.LookupToolType(icon,"SCREENMODEREQ");
  226.   scrID:=ics.GetTTValueStr(icon,"SCREENMODEID",defScrModeID);
  227.   doSkip:=ics.LookupToolType(icon,"SKIP");
  228.   audioPreload:=ics.LookupToolType(icon,"AUDIOPRELOAD");
  229.   magnify:=ics.GetTTValueInt(icon,"MAGNIFY",defMagnify);
  230.   doStats:=ics.LookupToolType(icon,"STATS");
  231. (* /// "$IF RUNDEBUG" *)
  232.   debug:=ics.LookupToolType(icon,"DEBUG");
  233. (* \\\ $END *)
  234.   IF out=NIL THEN
  235.     out:=d.Open(ics.GetTTValueStr(icon,"WINDOW","NIL:"),d.newFile);
  236.     IF out=NIL THEN out:=d.Open("NIL:",d.newFile); END;
  237.     oldOut:=d.SelectOutput(out);
  238.   END;
  239.   CheckOptions();
  240.   screenModeID:=b.CalcModeID(scrID);
  241. END GetIconOpts;
  242. (* \\\ ------------------------------------------------------------------------- *)
  243.  
  244. (* /// ----------------------- "PROCEDURE GetStdOpts()" ------------------------ *)
  245. PROCEDURE GetStdOpts * ();
  246. BEGIN
  247.   startDelay:=defStartDelay;
  248.   bufferSize:=defBufferSize;
  249.   pubScreen:="";
  250.   noVideo:=FALSE;
  251.   noSound:=FALSE;
  252.   doLoop:=FALSE;
  253.   askScrMode:=FALSE;
  254.   screenModeID:=b.CalcModeID(defScrModeID);
  255.   aga:=FALSE;
  256.   ham8:=FALSE;
  257.   dither:=FALSE;
  258.   cmap:="";
  259.   grayScale:=FALSE;
  260.   force24:=FALSE;
  261.   maxFPS:=FALSE;
  262.   doSkip:=FALSE;
  263.   audioPreload:=FALSE;
  264.   magnify:=defMagnify;
  265.   doStats:=FALSE;
  266.   quiet:=FALSE;
  267.   IF ol.wbStarted & (out=NIL) THEN
  268.     out:=d.Open("NIL:",d.newFile);
  269.     oldOut:=d.SelectOutput(out);
  270.   END;
  271. (* /// "$IF RUNDEBUG" *)
  272.   debug:=FALSE;
  273. (* \\\ $END *)
  274. END GetStdOpts;
  275. (* \\\ ------------------------------------------------------------------------- *)
  276.  
  277. BEGIN
  278.   rda:=NIL;
  279.   out:=NIL;
  280. CLOSE
  281.   IF rda#NIL THEN d.FreeArgs(rda); END;
  282.   IF ol.wbStarted & (out#NIL) THEN
  283.     oldOut:=d.SelectOutput(oldOut);
  284.     d.OldClose(out);
  285.   END;
  286. END CyberQTOpts.
  287.  
  288.